<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01_变量提升与函数提升</title>
</head>
<body>
<!--
    1. 变量声明提升
      * 通过var定义(声明)的变量, 在定义语句之前就可以访问到
      * 值: undefined
    2. 函数声明提升
      * 通过function声明的函数, 在之前就可以直接调用
      * 值: 函数定义(对象)
    3. 问题: 变量提升和函数提升是如何产生的?
-->
<script type="text/javascript">
    console.log('-----')
    /*
    面试题 : 输出 undefined
     */
    var a = 3

    function fn() {
        console.log(a)
        var a = 4
    }

    fn()

    console.log(b) //undefined  变量提升
    fn2() //可调用  函数提升
    // fn3() //不能  变量提升

    var b = 3

    function fn2() {
        console.log('fn2()')
    }

    var fn3 = function () {
        console.log('fn3()')
    }
</script>
</body>
</html>
